#! /bin/sh
# $Id$

# = TITLE
#  Restart script
#
# = AUTHOR
#  Michael Kircher (mk1@cs.wustl.edu)
#
# = DESCRIPTION
#  This script restarts the Naming, Scheduling and Event Service,
#  if "clean" is specified as a parameter, then the old
#  services are only killed and not restarted.

usage="Usage: $0 [-s, to start Scheduling Service] | [clean]"

#### ps options are platform-specific.
if [ `uname -s` = 'SunOS' ]; then
  ps_opts=-ef
else
  ps_opts=auxw
fi

#### Get the user name
if [ "$LOGNAME" ]; then
  #### LOGNAME is preserved across su
  login=$LOGNAME
else
  #### whoami returns the users login, which changes across su
  login=`whoami`
fi

#### Set TAO_ROOT, if it wasn't set.
if [ ! "$TAO_ROOT" ]; then
  if [ "$ACE_ROOT" ]; then
    TAO_ROOT=$ACE_ROOT/TAO
  else
    echo $0: you must set ACE_ROOT or TAO_ROOT!
    exit 1
  fi
fi

#### Set up a signal handler.
trap "/bin/rm -f /tmp/pids$login" 0 1 2 3 15

if [ -s /tmp/nameservicepid_$login ]; then
  echo // Killing the old services
  kill `cat /tmp/nameservicepid_$login`
  /bin/rm /tmp/nameserviceior_$login /tmp/nameservicepid_$login
fi

ps $ps_opts | grep Service | grep $login | grep -v grep | cut -c10-17 > /tmp/pids$login

if [ -s /tmp/pids$login ]; then
  pids=`cat /tmp/pids$login`
  kill $pids
fi

start_scheduling_service=0
if [ "$1" ]; then
  #### Stop here if "start_services clean" was called

  case $1 in
    '-?'  ) echo $usage; exit 0 ;;
    clean ) exit 0 ;;
    -s    ) start_scheduling_service=1 ;;
  esac
fi

echo // Initializing the log file

echo // Logfile for the script which startes Name and Event Service  > /tmp/logfile_$login

cd $TAO_ROOT/orbsvcs/Naming_Service
echo $ ./Naming_Service \
       -o /tmp/nameserviceior_$login \
       -p /tmp/nameservicepid_$login >> /tmp/logfile_$login
./Naming_Service \
       -o /tmp/nameserviceior_$login \
       -p /tmp/nameservicepid_$login > /tmp/logfile_Naming_Service_$login 2>&1  &

sleep 8

IOR=`cat /tmp/nameserviceior_$login`

echo // The IOR of the Naming Service: $IOR

echo // Started Naming Service on port $nameserviceport

if [ $start_scheduling_service -eq 1 ]; then
  cd $TAO_ROOT/orbsvcs/Scheduling_Service
  echo $ ./Scheduling_Service -ORBInitRef NameService=$IOR  >> /tmp/logfile_$login
  ./Scheduling_Service -ORBInitRef NameService=$IOR > /tmp/logfile_Scheduling_Service_$login  2>&1 &
  sleep 5

  echo // Started Scheduling Service on port $schedulerserviceport
fi

cd $TAO_ROOT/orbsvcs/Event_Service
echo $ ./Event_Service -ORBInitRef NameService=$IOR >> /tmp/logfile_$login
./Event_Service -ORBInitRef NameService=$IOR > /tmp/logfile_Event_Service_$login 2>&1 &

echo // Started Event Service on port $eventserviceport

echo "// Enjoy the use ;-)"
ps $ps_opts | grep Service | grep -v grep

echo
echo Note: if you will be running an application that uses the Naming Service,
echo you might want to set the NameService environment variable, like this:
echo 't/csh: % setenv NameServiceIOR `cat /tmp/nameserviceior_'$login'`'
echo 'bash:  $ export NameServiceIOR=`cat /tmp/nameserviceior_'$login'`'
